/*
 *  Carreaux.h
 *  Ray Tracing
 *
 *  Definit une texture carreaux sur les formes. Calcule a la volee
 *
 *  Created by Jean-Marc Comby + Romain Desquesne on Tue Jun 08 2004.
 *  Copyright (c) 2004. All rights reserved.
 *
 */
#ifndef _CARREAUX_H
#define _CARREAUX_H

#include "Materiau.hpp"

class Forme;

/**
 * Définit une texture en carreaux avec deux instances de Couleurs. Le
 * résultat est un damier. C'est une texture procédurale, qui est
 * calculée à la volée.
 *
 * J'ai ajouté un champ Volume pour permettre un traitement spécifique
 * à chaque Forme.
 *
 * @author Jean-Marc Comby + Romain Desquesne
 * @author Johan "Solo" Luisier
 *
 * @date 8 Juin 2004
 */
class Carreaux : public Materiau
{
 private:
  /**
   * Largeur des carreaux.
   */
  double Largeur; // largeur des carreaux
  Couleur Color1, /**< Couleur 1. */
    Color2; /**< Couleur 2. */
  /**
   * Pointeur sur la Forme que l'on veut recouvrir d'un damier.
   */
  Forme *Volume;
 public:
  Carreaux(const double& refl = 0., const double& trans = 0.,
	   const double& indice = 1., const double& reg = 0.,
	   const Couleur& n1 = Couleur( 255, 255, 255 ),
	   const Couleur& n2 = Couleur( 0, 0, 0 ),const double& larg = 1.);
  Carreaux(const double& refl, const double& trans, const double& indice,
	   const double& reg, const double& bruit,
	   const Couleur& n1,const Couleur& n2,const double& larg);
  ~Carreaux();
  Couleur couleur(const Coord &);
  void setVolume(Forme* forme);
};

#endif
